//package com.zhihuiyanche.common.util;
//
//import java.io.BufferedInputStream;
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.UnsupportedEncodingException;
//import java.net.HttpURLConnection;
//import java.net.URL;
//import java.security.MessageDigest;
//import java.security.NoSuchAlgorithmException;
//import java.util.Date;
//import java.util.Formatter;
//import java.util.HashMap;
//import java.util.Map;
//import java.util.UUID;
//
//import net.sf.json.JSONObject;
//
//import org.codehaus.jackson.JsonNode;
//
///**
// * 寰俊js-sdk鐩稿叧鏂规硶锛屼富瑕佺敤浜庡拰鍓嶇椤甸潰浜や簰
// * 
// * @author zjf
// *
// */
//public class WXFront
//{
//	/**
//	 * 杩斿洖缁欏墠鍙扮殑鏍￠獙鏁版嵁锛屾殏鏃剁敤锛屽垎闅斻�
//	 * 
//	 * @param url
//	 * @return
//	 */
//	public static String getSignatureString(String url, String tenantId)
//	{
//		Map<String, String> map = sign(url, tenantId);
//		String result = "";
//		result = map.get("appId") + "," + map.get("nonceStr") + "," + map.get("timestamp") + "," + map.get("signature") + "," + map.get("jsapi_ticket") + "," + map.get("url");
//		return result;
//	}
//
//	/**
//	 * js-jdk鍚庡彴楠岃瘉鏂规硶锛屾牴鎹〉闈rl杩涜楠岃瘉
//	 * 
//	 * @param url
//	 *            鍓嶅彴椤甸潰鐨剈rl 鍓嶅彴瀹屾暣鐨剈rl 鍙寜涓嬮潰鏂规硶鑾峰彇 String url =
//	 *            httpRequest.getRequestURL().toString();
//	 *            if(httpRequest.getQueryString()!=null) { url=
//	 *            url+"?"+httpRequest.getQueryString(); }
//	 *            httpRequest.setAttribute("url",url);
//	 * @return
//	 */
//	public static Map<String, String> sign(String url, String tenantId)
//	{
//		// 鑾峰彇鍑瘉
//		Boolean wechatAuthorize = FromRedisUtil.getWechatAuthorize(tenantId);
//		String ticket = null;
//		if (wechatAuthorize)
//		{
//			// 鏅�鍏紬鍙�
//			ticket = getJsapi(tenantId);
//		}
//		else
//		{
//			// 绗笁鏂规巿鏉�
//			ticket = WXThridFront.getJsapi(tenantId);
//		}
//
//		Map<String, String> ret = new HashMap<String, String>();
//		String nonce_str = create_nonce_str();
//		String timestamp = create_timestamp();
//		String string1;
//		String signature = "";
//
//		// 娉ㄦ剰杩欓噷鍙傛暟鍚嶅繀椤诲叏閮ㄥ皬鍐欙紝涓斿繀椤绘湁搴�
//		string1 = "jsapi_ticket=" + ticket + "&noncestr=" + nonce_str + "&timestamp=" + timestamp + "&url=" + url;
//		try
//		{
//			MessageDigest crypt = MessageDigest.getInstance("SHA-1");
//			crypt.reset();
//			crypt.update(string1.getBytes("UTF-8"));
//			signature = byteToHex(crypt.digest());
//		}
//		catch (NoSuchAlgorithmException e)
//		{
//			e.printStackTrace();
//		}
//		catch (UnsupportedEncodingException e)
//		{
//			e.printStackTrace();
//		}
//
//		ret.put("url", url);
//		ret.put("jsapi_ticket", ticket);
//		ret.put("nonceStr", nonce_str);
//		ret.put("timestamp", timestamp);
//		ret.put("signature", signature);
//		if (wechatAuthorize)
//		{
//			// 鏅�
//			ret.put("appId", WXConfig.getAppId(tenantId));
//		}
//		else
//		{
//			// 鍏紬鍙�
//			ret.put("appId", WXThridConfig.getAppId(tenantId));
//		}
//
//		return ret;
//	}
//
//	private static String byteToHex(final byte[] hash)
//	{
//		Formatter formatter = new Formatter();
//		for (byte b : hash)
//		{
//			formatter.format("%02x", b);
//		}
//		String result = formatter.toString();
//		formatter.close();
//		return result;
//	}
//
//	private static String create_nonce_str()
//	{
//		return UUID.randomUUID().toString();
//	}
//
//	private static String create_timestamp()
//	{
//		return Long.toString(System.currentTimeMillis() / 1000);
//	}
//
//	/**
//	 * 鑾峰彇ticket 姣忛殧涓�皬鏃惰幏鍙栦竴娆°�鏆傛椂涓烘墜鍔ㄨ幏鍙栵紝缂撳瓨鍒板唴瀛樸�
//	 * 
//	 * @return
//	 */
//	public static String getJsapi(String tenantId)
//	{
//		JSONObject json = WXConfig.getConfigBean(tenantId);
//		if (json.getString("jsapi_ticket") != null && json.getString("jsapi_ticket").length() > 0 && json.containsKey("jsapi_ticket_time") && json.getString("jsapi_ticket_time").length() > 0)
//		{
//			String jsapi_ticket = json.getString("jsapi_ticket");
//			Long ticket_createTime = json.getLong("jsapi_ticket_time");
//			// 濡傛灉ticket涓嶄负绌�
//			if (jsapi_ticket != null && (new Date().getTime() - ticket_createTime) < 3600000)
//			{
//				// 濡傛灉鏃堕棿鍦�涓�釜灏忔椂涔嬪唴
//				return jsapi_ticket;
//			}
//		}
//
//		return getNewJsapi(tenantId);
//
//	}
//
//	/**
//	 * 鑾峰彇ticket 姣忛殧涓�皬鏃惰幏鍙栦竴娆°�鏆傛椂涓烘墜鍔ㄨ幏鍙栵紝缂撳瓨鍒板唴瀛樸�
//	 * 
//	 * @return
//	 */
//	public static String getNewJsapi(String tenantId)
//	{
//		// 鑾峰彇ticket
//		String jsapi_ticket = "";
//		// 鑾峰彇token
//		String token = WXUtil.getAccessToken(tenantId);
//
//		String url = "http://api.weixin.qq.com/cgi-bin/ticket/getticket";
//		Map<String, String> map = new HashMap<String, String>();
//		map.put("type", "jsapi");
//		map.put("access_token", token);
//
//		JsonNode rootNode = WXUtil.sendHttpRequest(url, map);
//
//		JsonNode ticketNode = rootNode.findValue("ticket");
//		if (ticketNode != null)
//		{
//			jsapi_ticket = ticketNode.getTextValue();
//		}
//		JSONObject json = new JSONObject();
//		json.put("jsapi_ticket", jsapi_ticket);
//		json.put("jsapi_ticket_time", new Date().getTime());
//		WXConfig.updateConfigBean(tenantId, json);
//		return jsapi_ticket;
//
//	}
//
//	/**
//	 * 鍥剧墖涓嬭浇銆傚厛鍦ㄩ〉闈㈤�杩噅s-sdk鎺ュ彛涓婁紶鍒板井淇℃湇鍔″櫒锛屽啀鏍规嵁杩斿洖鐨刴ediaId鍘绘湇鍔″櫒涓婁笅杞藉埌鏈湴
//	 * 
//	 * @param mediaId
//	 * @param savePath
//	 * @return
//	 */
//	public static String downloadMedia(String mediaId, String savePath, String tenantId) throws Exception
//	{
//		// access_token
//		String token = WXUtil.getAccessToken(tenantId);
//		// 鑾峰彇椤圭洰瀛樻斁鍥剧墖鐨勮矾寰�
//		String allPath = new WXUtil().getClass().getResource("/").getPath();
//		String root = allPath.substring(0, allPath.indexOf("WEB-INF"));
//		// 璺緞鍚�鎸夋椂闂存儏鍐佃�瀹�
//		String filePath = root + savePath;// "attchment/" +mediaId + ".jpg";
//		// 鎷兼帴璇锋眰鍦板潃
//		String requestUrl = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID";
//		requestUrl = requestUrl.replace("ACCESS_TOKEN", token).replace("MEDIA_ID", mediaId);
//		try
//		{
//			URL url = new URL(requestUrl);
//			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//			conn.setDoInput(true);
//			conn.setRequestMethod("GET");
//
//			int resultLength = conn.getContentLength();
//
//			// 濡傛灉杩斿洖鏂囨湰鐨勯暱搴﹀皬浜�20锛屽垯璁や负鏄痑ccess_token澶辨晥銆�
//			if (resultLength < 120)
//			{
//				// 閲嶆柊鑾峰彇access_token
//				token = WXUtil.getNewAccessToken(tenantId);
//				System.out.println("access_token 閲嶆柊鑾峰彇:" + token);
//				// 鏂紑涓婁竴娆¤繛鎺�
//				conn.disconnect();
//				requestUrl = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID";
//				requestUrl = requestUrl.replace("ACCESS_TOKEN", token).replace("MEDIA_ID", mediaId);
//				url = new URL(requestUrl);
//				conn = (HttpURLConnection) url.openConnection();
//				conn.setDoInput(true);
//				conn.setRequestMethod("GET");
//				resultLength = conn.getContentLength();
//				// 鍐嶄竴娆¤幏鍙栬繑鍥炵殑鏂囨湰
//				if (resultLength < 120)
//				{
//					// 濡傛灉杩樺け璐ワ紝璇存槑鏄痬ediaId澶辨晥 鍒�
//					return "error";
//				}
//			}
//
//			BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
//			FileOutputStream fos = new FileOutputStream(new File(filePath));
//			byte[] buf = new byte[8096];
//			int size = 0;
//			while ((size = bis.read(buf)) != -1)
//				fos.write(buf, 0, size);
//			fos.close();
//			bis.close();
//
//			conn.disconnect();
//			String info = String.format("涓嬭浇濯掍綋鏂囦欢鎴愬姛锛宖ilePath=" + filePath);
//		}
//		catch (Exception e)
//		{
//			filePath = null;
//			String error = String.format("涓嬭浇濯掍綋鏂囦欢澶辫触锛�s", e);
//		}
//		return filePath;
//	}
//}
